package com.share.tool.generator.api_method;


import com.share.common.utils.EnvUtil;
import com.share.common.utils.FileUtil;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 分析代码源文件,提取controller中的方法和对应的参数信息，最终输出到文件中
 */
public class MainDoc {
    public static void main(String[] args) {
        //1.获取java文件
        String projectDir = EnvUtil.USER_DIR;//当前工程主目录
        List<File> javaFileList = FileUtil.listFile(projectDir, "java", ".java").stream().
                filter(f -> {
                    String path = f.getAbsolutePath();
                    boolean d1 = path.endsWith("Controller.java");
                    boolean d2 = path.endsWith("Web.java");
                    boolean d3 = path.endsWith("Ctrl.java");
                    if (d1 || d2 || d3) {
                        return true;
                    } else {
                        return false;
                    }
                }).collect(Collectors.toList());

        //2.遍历处理
        List<String[]> list = new LinkedList<>();
        for (File file : javaFileList) {
            String absolutePath = file.getAbsolutePath();
            List<String[]> execute = DocUtil.execute(absolutePath);
            list.addAll(execute);
        }

        //3.写入文件
        StringBuffer sb = new StringBuffer();
        for (String[] arr : list) {
            String msg = arr[1];
            String method = arr[0];

            if (!StringUtils.isBlank(msg)) {
                sb.append("```text");
                sb.append(System.lineSeparator());
                sb.append(msg);
                sb.append(System.lineSeparator());
                sb.append("```");
                sb.append(System.lineSeparator());
            }

            sb.append("#####" + method);
            sb.append(System.lineSeparator());
        }

        String filepath = projectDir + File.separator + "method.md";
        FileUtil.write(filepath, sb.toString());
        System.out.println("接口文档生成完毕,文件路径=" + filepath);
    }
}
